import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
import { JwtStrategy } from './jwt.strategy';
import { UsersModule } from '../users/users.module';

/**
 * 认证模块，包含用户认证和授权功能
 */
@Module({
  imports: [
    ConfigModule,
    UsersModule,
    PassportModule,
    JwtModule.registerAsync({
      inject: [ConfigService],
      useFactory: (config: ConfigService) => ({ // 从配置服务中获取 JWT 密钥
        secret: config.get<string>('JWT_SECRET'), // 从环境变量中获取 JWT 密钥
        signOptions: { expiresIn: '1h' }, // 设置 JWT 过期时间为 1 小时
      }),
    }),
  ],
  providers: [AuthService, JwtStrategy], // 提供认证服务和 JWT 策略
  controllers: [AuthController], // 注册认证控制器 
})
export class AuthModule {}